import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
// state 状态
// getters 计算属性
// mutations 修改state 只能写同步代码不能写异步
// 为什么mutations不能写异步  因为mutations是被实时监听的 异步修改数据的话 最新数据可能不会被监听到 因为异步会延迟
// actions 提交mutations 可以写异步
// modules 模块化
import one from './modules/one'
export default new Vuex.Store({
  state: {
    money: 100000
  },
  mutations: {
    addMoney(state, money) {
      state.money += money
    },
    buy(state, money) {
      state.money -= money
    }
  },
  actions: {
    ADD_MONEY(context, money) {
      return new Promise((resolve, reject) => [
        setTimeout(() => {
          context.commit('addMoney', money)
          resolve()
        }, 500)
      ])
    },
    BUY(context, money) {
      setTimeout(() => {
        context.commit('buy', money)
      }, 500)
    }
  },
  modules: {
    one: one
  }
})
